package com.study.genericity_method;

import java.util.ArrayList;

public class Test2 {
    //目标：通配符和上下限
    //需求：所有汽车要一起参与比赛
    public static void main(String[] args) {
        ArrayList<TSL> tsls = new ArrayList<>();
        tsls.add(new TSL());
        tsls.add(new TSL());
        competi(tsls);
//        competi(new ArrayList<Integer>());
    }
    //虽然LX和TSL是car的子类，但是ArrayList<LX>和ArrayList<TSL>和ArrayList<Car>没有关系！
//    public static void competi(ArrayList<Car> cars){


//    public static <T> void competi(ArrayList<T> cars){这样定义会导致可以加入包含任何泛型的ArrayList

        //通配符：其实就是? 可以在使用泛型的时候代表一切类型。E T K V 是定义时使用
        //泛型的上下限： ? extends Car 上限（表示必须是Car或者Car的子类）
                   // ? super Car 下限(表示必须是Car或Car的父类)
    public static void competi(ArrayList<? extends Car> cars){

    }
}
class Car{

}
class TSL extends Car{

}
class LX extends Car{

}
